C++/1.7.1 Das Hallo Welt-Array
Das "Hallo Welt"-Array In diesem Beispiel wollen wir die Ausgabe des Textes "Hallo Welt!" in der Konsole mittels eines Arrays (Datenfeld) realisieren. Des weiteren deklarieren wir einen Zeiger auf das Array und lassen uns jeden Buchstaben in eine separate Zeile ausgeben. Danach stellen wir die Größe des Arrays in Bytes mittels der sizeof() - Funktion fest und geben dessen Größe in der Konsole aus. Hierzu zuerst wieder der komplette Quellcode: #include //Headerdatei für den Befehl "cout" #include //Headerdatei für den Befehl "system" using namespace std; //Wir verwenden Befehle aus dem Namensraum "std" char cText[] = "Hallo Welt!"; //Das Array vom Typ char mit dem Text char *pText = cText; //Zeiger auf das Array int main(int argc, char *argv[]) { cout << cText << endl; //Den kompletten Text ausgeben cout << pText0 << endl; //"H" cout << pText1 << endl; //"a" cout << pText2 << endl; //"l" cout << pText3 << endl; //"l" cout << pText4 << endl; //"o" cout << pText5 << endl; //" " cout << pText6 << endl; //"W" cout << pText7 << endl; //"e" cout << pText8 << endl; //"l" cout << pText9 << endl; //"t" cout << pText10 << endl; //"!" //Die Größe des Arrays in Bytes ausgeben cout << "cText ist " << sizeof(cText) << " Bytes gross" << endl; system("pause"); //Auf Tastendruck warten return 0; //Unser Programm wurde erfolgreich beendet } Dieser Quellcode erzeugt folgende Ausgabe in der Konsole: Hallo Welt!Kategorie:C++ H a l l o W e l t ! cText ist 12 Bytes gross Verstehen des Quellcodes Einbinden der benötigten Header Zuerst werden die benötigten Header für den Befehl cout ('c'onsole 'out'put) sowie für den Befehl system(), welcher eine Systemanweisung an die Konsole schickt: #include //Headerdatei für den Befehl "cout" #include //Headerdatei für den Befehl "system" Festlegen des Namensraums Um nicht ständig den Namensraum std vor den Befehl cout setzen zu müssen, definieren wir diesen als unseren Standard-Namensraum: using namespace std; //Wir verwenden Befehle aus dem Namensraum "std" Deklaration der Variablen Zuerst deklarieren wir ein sog. Array ''(Datenfeld), welches wir gleich ''initialisieren ''(also mit einem Wert füllen). Wir lassen die Größenangabe frei, wodurch der Compiler diesem Array automatisch eine Größe anhand des zugewiesenen Werts (also dem Text) zuweist. Die Größenangabe ist normalerweise zwischen den eckigen Klammern. Würden wir die Größenangabe selbst vornehmen, so müssten wir dass Array wie folgt deklarieren: char cText12 = "Hallo Welt!"; //Das Array vom Typ char mit dem Text Der Text "Hallo Welt!" enthält 11 Zeichen. Da ein Text (auch: ''String) in C/C++ immer nullterminiert ist, muss ein Byte mehr für die Nullterminierung ("\0") angehängt werden. Dies führt uns zu folgendem Inhalt des Arrays cText: Die angehängte Nullterminierung ist somit der Grund, warum das Array die Größe von Textlänge + 1 haben muss. Der Compiler akzeptiert keine nullterminierten Zeichenketten, da sonst kein Ende der Zeichenkette im Maschinencode zugewiesen wird. Anschließend wird ein Zeiger auf das Array deklariert. Dieser zeigt auf das erste Byte des Arrays und kann mittels Zeigerarithmetik durchlaufen werden. Die Deklaration erfolgt durch: char *pText = cText; //Zeiger auf das Array Ausgabe des Texts in der Konsole Zuerst wird das komplette Array in einer Zeile ausgegeben. Die Nullterminierung sorgt für die Begrenzung der Länge: cout << cText << endl; //Den kompletten Text ausgeben Zuerst steht der Befehl cout zur Ausgabe von Text in der Konsole gefolgt von dem Operator "<<", welcher die einzelnen Argumente des Befehls voneinander trennt. Dies vermeidet Vermischungen von Argumenten und legt die Reihenfolge fest. Die Funktion endl ('endl'ine) hat die selbe Funktion wie die Escape-Sequenz "\n", (wie verwendet in Kapitel 1.6 Arbeiten mit Orwell DevC++) welcher eine neue Zeile in der Konsole erzeugt. Alternativ könnten Sie auch folgende Codezeile eingeben: cout << cText << "\n"; Dies hätte ebenfalls einen Zeilenumbruch in der Konsole am Ende des Texts zu Folge. Anschließend werden die Buchstaben des Arrays einzeln gefolgt von einem Zeilenumbruch ausgegeben, indem auf den jeweiligen Index des Arrays (siehe obige Tabelle zum Vergleich) zugegriffen wird: cout << pText0 << endl; //"H" cout << pText1 << endl; //"a" cout << pText2 << endl; //"l" cout << pText3 << endl; //"l" cout << pText4 << endl; //"o" cout << pText5 << endl; //" " cout << pText6 << endl; //"W" cout << pText7 << endl; //"e" cout << pText8 << endl; //"l" cout << pText9 << endl; //"t" cout << pText10 << endl; //"!" Hierbei ist zu beachten, dass der erste Index im Array cText mit 0 beginnt und nicht mit 1. Normalerweise würde man dieses Array mit einer Schleife durchlaufen, was aber das ganze weniger durchschaubar macht. Aus diesem Grund wurde der Code hier so ausführlich gehalten, was eigentlich keine gängige Praxis ist. Abfrage der Größe des Arrays Als nächstes wird innerhalb einer cout-Anweisung mittels der sizeof-Funktion die Größe des Arrays cText in Bytes abgefragt und ausgegeben: cout << "cText ist " << sizeof(cText) << " Bytes gross" << endl;